<?php

class CuentasElectricidadController extends Sgit_Controller_Action
{

    protected $_checkZona = true;

    protected $_tipo = 'Electricidad';

    public function _begin()
    {
        $this->anio = $this->_request->getParam('anio');
        $this->version = $this->_request->getParam('version', 0);
        $this->view->version=$version;
        
        if ($this->_idZona == 10)
        {
            $this->zonas = array(1, 3, 4, 6);
        } elseif ($this->_idZona == 18)
        {
            $this->zonas = array(1, 2, 3, 4, 6);
        } else
        {
            $this->zonas = $this->_idZona;
        }
    }
    
    
   	public function indexAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_index();
        }
	}
    
   	public function planAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_plan();
        }
	}
	public function avanceAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_avance();
        }
	}
    
    
    public function _index()
    {

       
        $anio = $this->anio;
        $version = $this->version;
        $zonas=$this->zonas;

        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        $filtros->addFormSelect($f_anio);

        if(!is_array($this->zonas)){
            $f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
            $f_version->setValue($version);
            $filtros->addFormSelect($f_version);
        }
        
        
        $filtros->addPdf();
        $filtros->addExcel();
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();



        if ($anio)
        {
            $this->_toExport(true);

            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setZona($zonas);
            $cuentas->setVersion($version);
            $this->view->anio = $anio;

            
            $estados = new Application_Model_CuentasEstados();
            $estados->setZona($zonas);
            $estados->setAnio($anio);
            $estado = $estados->getEstados($this->_tipo);
            $this->view->estados = $estado;
            

            $this->view->coste_sap = $cuentas->addInforme($cuentas->getCosteSapElectricidad());
            $this->view->inversa_sap = $cuentas->addInforme($cuentas->getInversaSapElectricidad());
            $this->view->saldo_sap = $cuentas->addInforme($cuentas->getSaldoSapElectricidad());


            $this->view->factura_compania = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(18));
            $this->view->materiales = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(38));
            $this->view->mano_obra = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(39));
            $this->view->imputacion = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(19));
            $this->view->renting = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(59));


            $this->view->coste_electricidad = $cuentas->addInforme($cuentas->getCosteElectricidad());
            $this->view->inversa_electricidad = $cuentas->addInforme($cuentas->getInversaElectricidad());
            $this->view->saldo_electricidad = $cuentas->addInforme($cuentas->getSaldoElectricidad());

            $this->view->inmovilizado_manoobra = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(47));
            $this->view->inmovilizado_materiales = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(48));
            $this->view->inmovilizado_total = $cuentas->addInforme($cuentas->getInmovilizadoElectricidad());


            $this->view->coste_total_neto = $cuentas->addInforme($cuentas->getCosteTotalNetoElectricidad());
            $this->view->inversa = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(20));
            $this->view->saldo_total_neto = $cuentas->addInforme($cuentas->getSaldoTotalNetoElectricidad());


            $this->view->facturacion_sgit = $cuentas->addInforme($cuentas->getFacturacionElectricidadSgit());
            $this->view->produccion_sgit = $cuentas->addInforme($cuentas->getProduccionElectricidad());


            $this->view->diferencia_produccion_sgit = $cuentas->addInforme($cuentas->getDiferenciaFacturacionProduccionElectricidad());
            $this->view->margen_bruto = $cuentas->addInforme($cuentas->getMargenBrutoProduccionElectricidad());


            $meses = Sgit_Util_Meses::run();

            foreach ($meses as $k => $m)
            {
              
              $ico[$k] = $cuentas->icoEstado($estado[$k]) . ' ' . substr($m, 0, 3);
          
            }

            $this->view->meses = $ico;

        }
    }

    public function _plan()
    {

        $anio = $this->_request->getParam('anio');
        $version = $this->_request->getParam('version', 0);
        $this->view->version=$version;

        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        $filtros->addFormSelect($f_anio);

        $f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
        $f_version->setValue($version);
        $filtros->addFormSelect($f_version);
        $filtros->addPdf();
        $filtros->addExcel();
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();


        if ($anio)
        {

            $this->_toExport(true);

            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setVersion($version);
            $cuentas->setZona($this->_idZona);
            $this->view->anio = $anio;


            $this->view->factura_compania = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(18));
            $this->view->materiales = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(38));
            $this->view->mano_obra = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(39));
            $this->view->imputacion = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(19));
            $this->view->renting = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(59));


            $this->view->inversa = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(20));

            $this->view->inmovilizado_manoobra = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(47));
            $this->view->inmovilizado_materiales = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(48));

            $this->view->meses = Sgit_Util_Meses::run();


        }
    }

    public function _avance()
    {
        $anio = $this->_request->getParam('anio');
        
        $this->version = 0;
        $this->view->version=$this->version;

        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        $filtros->addFormSelect($f_anio);

        //$f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
        //$f_version->setValue($version);
        //$filtros->addFormSelect($f_version);
        
        $filtros->addPdf();
        $filtros->addExcel();
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();


        if ($anio)
        {
            $this->_toExport(true);

            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setVersion($this->version);
            $cuentas->setZona($this->_idZona);
            $this->view->anio = $anio;

            
            $estados = new Application_Model_CuentasEstados();
            $estados->setZona($this->_idZona);
            $estados->setAnio($anio);
            $this->view->estados = $estados->getEstados($this->_tipo);
            

            $this->view->sap_coste = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(32));
            $this->view->sap_inversa = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(33));

            $this->view->factura_compania = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(18));
            $this->view->materiales = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(38));
            $this->view->mano_obra = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(39));
            $this->view->imputacion = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(19));
            $this->view->renting = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(59));


            $this->view->inversa = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(20));

            $this->view->inmovilizado_manoobra = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(47));
            $this->view->inmovilizado_materiales = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(48));

            $this->view->meses = Sgit_Util_Meses::run();

        }
    }

    public function editarAction()
    {

        $tipo = $this->_request->getParam('tipo');

        $keys['id_zona'] = $this->_request->getParam('idZona');
        $keys['mes'] = $this->_request->getParam('mes');
        $keys['anio'] = $this->_request->getParam('anio');
        $keys['id_naturaleza'] = $this->_request->getParam('id_naturaleza');
        $keys['version'] = $this->_request->getParam('version');

        $dato = Sgit_Filter_FloatNull::filter($this->_request->getParam('dato'));
        $fecha = date('Y-m-d');

        if ($tipo == 'presupuesto')
        {
            $forUpdate['f_presupuesto'] = $fecha;
            $forUpdate['presupuesto'] = $dato;
        } elseif ($tipo == 'estimado')
        {
            $forUpdate['f_estimado'] = $fecha;
            $forUpdate['estimado'] = $dato;
        }


        $cuentas = new Application_Model_Cuentas();
        $cuentas->replace($keys, $forUpdate);

        $where['id_zona=?'] = $keys['id_zona'];
        $where['id_naturaleza=?'] = $keys['id_naturaleza'];
        $where['anio=?'] = $keys['anio'];
        $where['version=?'] = $keys['version'];


        $tipo_quote = "SUM(" . $cuentas->getAdapter()->quoteIdentifier($tipo) . ")";
        $suma = $cuentas->getOne($tipo_quote, $where);

        $json['status'] = 'ok';
        $json['suma'] = $this->view->numEs($suma, 0);


        $this->_helper->json($json);

    }


    public function lockAction()
    {

        $keys['id_zona'] = $this->_request->getParam('idZona');
        $keys['mes'] = $this->_request->getParam('mes');
        $keys['anio'] = $this->_request->getParam('anio');
        $keys['version'] = $this->_request->getParam('version');
        $keys['tipo'] = $this->_tipo;

        $forUpdate['objeto_cambio'] = $this->_request->getParam('objeto_cambio');
        $forUpdate['notas_cambio'] = $this->_request->getParam('notas');
        $forUpdate['cambio_aceptado'] = null;
        $forUpdate['estado'] = 0;
        $forUpdate['propone_cambio'] = $this->_auth->getIdentity()->id;
        $forUpdate['fecha_peticion_cambio'] = date('Y-m-d');
        $forUpdate['fecha_cierre'] = date('Y-m-d');


        $cuentas = new Application_Model_CuentasEstados();
        $cuentas->replace($keys, $forUpdate);

        $json['status'] = 'ok';
        $this->_helper->json($json);
    }


       
    public function valuesToExport()
    {
        $cuentas = new Application_Model_Cuentas();
        $cuentas->setAnio($this->anio);
        $cuentas->setVersion($this->version);
        $cuentas->setZona($this->zonas);
            
        foreach($cuentas->addExport($cuentas->getCosteSapElectricidad()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getInversaSapElectricidad()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSaldoSapElectricidad()) as $f) $rows[]=$f;   

        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(18)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(38)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(39)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(19)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(59)) as $f) $rows[]=$f;
        
        foreach($cuentas->addExport($cuentas->getCosteElectricidad()) as $f) $rows[]=$f; 
        foreach($cuentas->addExport($cuentas->getInversaElectricidad()) as $f) $rows[]=$f; 
        foreach($cuentas->addExport($cuentas->getSaldoElectricidad()) as $f) $rows[]=$f; 
  
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(47)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(48)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getInmovilizadoElectricidad()) as $f) $rows[]=$f; 

        foreach($cuentas->addExport($cuentas->getCosteTotalNetoElectricidad()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(20)) as $f) $rows[]=$f;  
        foreach($cuentas->addExport($cuentas->getSaldoTotalNetoElectricidad()) as $f) $rows[]=$f;        

        foreach($cuentas->addExport($cuentas->getFacturacionElectricidadSgit()) as $f) $rows[]=$f; 
        foreach($cuentas->addExport($cuentas->getProduccionElectricidad()) as $f) $rows[]=$f;  
        foreach($cuentas->addExport($cuentas->getDiferenciaFacturacionProduccionElectricidad()) as $f) $rows[]=$f; 
        foreach($cuentas->addExport($cuentas->getMargenBrutoProduccionElectricidad()) as $f) $rows[]=$f;   
 
        
        return $rows;
    }
    
    public function excelAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        $excel = new Sgit_Excel();
        $excel->setColumnas($this->_getXml());
        $excel->render($this->valuesToExport(), $this->_controllerName);
    }
    
    public function pdfAction()
    {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);

        $pdf = new Sgit_Pdf('L');
        $pdf->setColumnas($this->_getXml());
        
        $pdf->SetTitle('Electricidad  '.$this->zona.' '.$this->anio.' V'.$this->version);
        $pdf->render($this->valuesToExport(), $this->_controllerName);
            
    }


}
